﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;

//namespace XmppConsoleTest
//{
//    class LightAndCarTest2
//    {
//        static void Main()
//        {
//            var light = new Light();
//            var car1 = new Car();
//            car1.Name = "轿车1";
//            var car2 = new Car();
//            car2.Name = "公交车1";
//            light.AddObserver(car1);
//            light.AddObserver(car2);
//            while (true)
//            {
//                light.ChangeColor();
//                Console.WriteLine("当前交通灯的颜色:" + light.Color);
//                Console.WriteLine($"{car1.Name}当前状态：{car1.State}");
//                Console.WriteLine($"{car2.Name}当前状态：{car2.State}");

//                Thread.Sleep(5000);
//            }
//        }
//    }
//    // 发布者
//    abstract class Subject
//    {
//        List<Observer> observers = new List<Observer>();

//        public void AddObserver(Observer observer)
//        {
//            this.observers.Add(observer);
//        }

//        public void Publish()
//        {
//            foreach (Observer observer in observers)
//            {
//                observer.Update(this);
//            }
//        }
//    }

//    // 观察者
//    abstract class Observer
//    {
//        public abstract void Update(Subject subject);
//    }

//    class Car : Observer
//    {
//        public string Name { get; set; }

//        public string State { get; set; }


//        public override void Update(Subject subject)
//        {
//            Light light = subject as Light;
//            if (light.Color == "green")
//            {
//                State = "gogo";
//            }
//            else
//            {
//                State = "stop";
//            }
//        }
//    }

//    class Light : Subject
//    {
//        public string Color { get; set; }

//        public void ChangeColor()
//        {
//            if (Color == "red")
//            {
//                Color = "green";
//            }
//            else
//            {
//                Color = "red";
//            }
//            this.Publish();
//        }
//    }
//}

